
package DAO;

import Entidad.Sala;
import Singletons.Mensajes;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;

public class SalaDAO {

    public void Crear(Sala sala,EntityManager em) throws PersistenceException {
        try{
            em.persist(sala);
        }catch(Exception e){
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
    }

    public Sala Buscar(Long id,EntityManager em) throws PersistenceException {
        Sala sala;
        sala=em.find(Sala.class, id);
        return sala;
    }

    public void Actualizar(Sala nuevo,EntityManager em) throws PersistenceException {
        try{
            em.merge(nuevo);
        }catch(Exception e){
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
    }

    public ArrayList<Sala> listaActual(EntityManager em) throws PersistenceException {
        ArrayList<Sala> lista=new ArrayList<Sala>();
        try{
            Query consulta = em.createQuery("SELECT u FROM Sala u");
            List listaSalas=consulta.getResultList();
            for(Object s:listaSalas)
                lista.add((Sala)s);
        }catch(NoResultException e){
            lista=new ArrayList<Sala>();
        }catch(Exception e){
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
        return lista;
    }

    public Sala buscarPorNombre(String nombre,EntityManager em) throws PersistenceException {
        Sala sala;
        try{
            Query query= em.createQuery("SELECT s FROM Sala s WHERE s.nombre = :NOMBRE").setParameter("NOMBRE", nombre);
            sala=(Sala)query.getSingleResult();
        }catch(NoResultException e){
            sala=null;
        } catch(Exception e) {
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
        return sala;
    }

}